package cxydmmszl.chapter05.t084.simple;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * <li style="color: red;">Prob</li>
 * 翻转字符串（1）
 * <li style="color: green;">Desc</li>
 * 给定字符类型的数组 chas，请在单词间做逆序调整。
 * 只要做到单词的顺序逆序即可，对空格的位置没有要求。
 * <li style="color: green;">Input</li>
 * 输入一行只含字母和空格的字符串，代表 chas（1≤length(chas)≤10^5）。
 * <li style="color: green;">Output</li>
 * 输出一行字符串，代表逆转顺序后的字符串。
 * <li style="color: blue;">Link</li> CD116
 *
 * @author habitplus
 * @since 2021-09-08 21:48
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String s = bf.readLine();

        s = rotateWord(s);

        System.out.println(s);
    }

    private static String rotateWord(String s) {
        if (s == null || s.length() == 0) {
            return "";
        }

        char[] chs = s.toCharArray();
        int n = chs.length;
        int l = -1, r = -1;
        for (int i = 0; i < n; i++) {
            if (chs[i] != ' ') {
                l = i == 0 || chs[i-1] == ' ' ? i : l;
                r = i == chs.length - 1 || chs[i + 1] == ' ' ? i : r;
            }

            if (l != -1 && r != -1) {
                reverse(chs, l , r);
                l = r = -1;
            }
        }
        return new String(chs);
    }


    private static void reverse(char[] chs, int l, int r) {
        char t;
        while (l < r) {
            t = chs[l];
            chs[l++] = chs[r];
            chs[r--] = t;
        }
    }
}
